package jmine.tec.environment.db.server;

import java.sql.Connection;

/**
 * @created Sep 24, 2008
 * @author galmeida (Sep 24, 2008)
 */
public interface ManagedTestDBServer extends TestDBServer {

    /**
     * Inicia o servidor.
     */
    void start();

    /**
     * Para o servidor.
     */
    void stop();

    /**
     * Salva o estado atual do banco de dados.
     * 
     * @param key a chave desse estado.
     */
    void save(String key);

    /**
     * Restaura um estado do banco de dados.
     * 
     * @param key o estado a ser restaurado.
     * @return <code>true</code> caso o arquivo seja restaurado com sucesso, <code>false</code> caso contrário.
     */
    boolean restore(String key);

    /**
     * Devolve <code>true</code> se o servidor estiver rodando, <code>false</code> caso contrário.
     * 
     * @return <code>true</code> se o servidor estiver rodando, <code>false</code> caso contrário.
     */
    boolean isRunning();

    /**
     * Habilita parâmetros para modo "batch". Estes parâmetros não devem ser utilizados normalmente, apenas para inclusões em batch.
     * 
     * @param conn conn
     */
    void enableBatchMode(Connection conn);

    /**
     * Desabilita parâmetros batch.
     * 
     * @param conn conn
     */
    void disableBatchMode(Connection conn);
}
